import numpy as np
import cv2 as cv

# 读取图像
image_path = "../LingXiao.png"
img = cv.imread(image_path)

# 检查图像是否成功读取
if img is None:
    print(f"Error: Image not found or unable to open the image at path: {image_path}")
    exit(1)

# 图像的加法
img_add = cv.add(img, 100)       # 每个像素值加 100
# 图像的减法
img_sub = cv.subtract(img, 100)  # 每个像素值减 100
# 图像的乘法
img_mul = cv.multiply(img, 1.5)  # 每个像素值乘 1.5
# 图像的除法
img_div = cv.divide(img, 2)      # 每个像素值除以 2

# 图像的按位与
img_bitwise_and = cv.bitwise_and(img, 100)  # 每个像素值按位与 100
# 图像的按位或
img_bitwise_or = cv.bitwise_or(img, 100)    # 每个像素值按位或 100
# 图像的按位异或
img_bitwise_xor = cv.bitwise_xor(img, 100)  # 每个像素值按位异或 100
# 图像的取反
img_not = cv.bitwise_not(img)               # 每个像素值取反

# 创建一个纯黑色图像
black_img = np.zeros_like(img)
# 在纯黑色图像上写一句话
cv.putText(black_img, "(opencv) joke@ShineZhang:~/ln_opencv/03_img_opt/python$:", 
           (10, 50), cv.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)  # 白色 (B, G, R) 字体大小为0.5，线条粗细为 1

# 图像混合
img_blend = cv.addWeighted(img, 0.2, black_img, 0.8, 0)     # 图像混合，权重分别为 0.2 和 0.8



cv.imshow("LingXiao", img)
cv.imshow("opt", img_blend)


# 等待按键
print("Press ESC to close the windows.")
while True:
    key = cv.waitKey(0)
    if key == 27:  # ESC 键
        break
    else:
        print(f"Key pressed: {key}")

# 关闭所有窗口
cv.destroyAllWindows()
